Skip to content

Commit 8c074b9

Browse files
authored
Merge pull request #8158 from PineroDev/main
#5 - Swift
2 parents 92951d4 + 5f6aa55 commit 8c074b9

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
/*
2+
* EJERCICIO:
3+
* - Muestra ejemplos de asignación de variables "por valor" y "por referencia", según
4+
* su tipo de dato.
5+
* - Muestra ejemplos de funciones con variables que se les pasan "por valor" y
6+
* "por referencia", y cómo se comportan en cada caso en el momento de ser modificadas.
7+
* (Entender estos conceptos es algo esencial en la gran mayoría de lenguajes)
8+
*
9+
* DIFICULTAD EXTRA (opcional):
10+
* Crea dos programas que reciban dos parámetros (cada uno) definidos como variables anteriormente.
11+
* - Cada programa recibe, en un caso, dos parámetros por valor, y en otro caso, por referencia.
12+
* Estos parámetros los intercambia entre ellos en su interior, los retorna, y su retorno
13+
* se asigna a dos variables diferentes a las originales. A continuación, imprime el valor de las
14+
* variables originales y las nuevas, comprobando que se ha invertido su valor en las segundas.
15+
* Comprueba también que se ha conservado el valor original en las primeras.
16+
*/
17+
18+
import Foundation
19+
20+
// Variables por Valor
21+
var palabra: String = "Hola"
22+
var numero: Int = 32
23+
var myArray: [Int] = [1, 2, 3]
24+
var miDiccionario: [Int : String] = [1: "Casa", 2: "Chalet"]
25+
26+
struct NumModel{
27+
var miNumero: Double
28+
var esPar: Bool
29+
}
30+
var num1 = NumModel(miNumero: 10.5, esPar: true)
31+
var num2 = NumModel(miNumero: 20.5, esPar: false)
32+
33+
enum CarMode{
34+
case Honda
35+
case Lancia
36+
}
37+
38+
var car1 = CarMode.Honda
39+
var car2 = CarMode.Lancia
40+
41+
// Variables por referencia
42+
43+
class VentanaApp{
44+
let titulo: String
45+
var esVisible: Bool
46+
47+
init(titulo: String, esVisible: Bool){
48+
self.titulo = titulo
49+
self.esVisible = esVisible
50+
}
51+
}
52+
53+
54+
// Dificultad Extra
55+
56+
var valor1: Int = 5
57+
var valor2: Int = 7
58+
var numeroValor1: Int = 0
59+
var numeroValor2: Int = 0
60+
61+
62+
func cambiarValores(valor1 : Int, valor2 : Int) -> (Int, Int) {
63+
let nuevoValor1 = valor2
64+
let nuevoValor2 = valor1
65+
return (nuevoValor1, nuevoValor2)
66+
}
67+
68+
var valores = cambiarValores(valor1: valor1, valor2: valor2)
69+
numeroValor1 = (valores.0)
70+
numeroValor2 = (valores.1)
71+
72+
print("Valores originales: valor1: \(valor1), valor2: \(valor2)")
73+
print("Valores cambiados: valor1: \(numeroValor1), valor2: \(numeroValor2)")
74+
75+
class ClaseReferencias{
76+
var valor: Int = 0
77+
78+
init(valor: Int) {
79+
self.valor = valor
80+
}
81+
}
82+
83+
var valorClase1 = ClaseReferencias(valor: 13)
84+
var valorClase2 = ClaseReferencias(valor: 25)
85+
var valorCambiado1 = ClaseReferencias(valor: 0)
86+
var valorCambiado2 = ClaseReferencias(valor: 0)
87+
88+
89+
func cambiarValoresClase(valorClase1: ClaseReferencias, valorClase2: ClaseReferencias) -> (Int, Int) {
90+
let nuevoValorClase1 = valorClase2.valor
91+
let nuevoValorClase2 = valorClase1.valor
92+
return (nuevoValorClase1, nuevoValorClase2)
93+
}
94+
95+
var valoresClase = cambiarValoresClase(valorClase1: valorClase1, valorClase2: valorClase2)
96+
valorCambiado1.valor = (valoresClase.0)
97+
valorCambiado2.valor = (valoresClase.1)
98+
99+
print("Valores originales: valor1: \(valorClase1.valor), valor2: \(valorClase2.valor)")
100+
print("Valores cambiados: valor1: \(valorCambiado1.valor), valor2: \(valorCambiado2.valor)")

0 commit comments

Comments
 (0)