forked from mouredev/roadmap-retos-programacion
-
Notifications
You must be signed in to change notification settings - Fork 0
/
pedroomar23.swift
48 lines (35 loc) · 1.42 KB
/
pedroomar23.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import Foundation
/*
* EJERCICIO:
* Utilizando tu lenguaje, crea un programa capaz de ejecutar de manera
* asíncrona una función que tardará en finalizar un número concreto de
* segundos parametrizables. También debes poder asignarle un nombre.
* La función imprime su nombre, cuándo empieza, el tiempo que durará
* su ejecución y cuando finaliza.
*
* DIFICULTAD EXTRA (opcional):
* Utilizando el concepto de asincronía y la función anterior, crea
* el siguiente programa que ejecuta en este orden:
* - Una función C que dura 3 segundos.
* - Una función B que dura 2 segundos.
* - Una función A que dura 1 segundo.
* - Una función D que dura 1 segundo.
* - Las funciones C, B y A se ejecutan en paralelo.
* - La función D comienza su ejecución cuando las 3 anteriores han
* finalizado.
*/
func starProgram(_ name: String, duration: Double) async {
let iniciarProgram = Date()
let finishPrgrom = Date()
let formatter = DateFormatter()
formatter.dateFormat = "HH:mm:ss"
print("El programa tiene como nombre \(formatter.String(from: iniciarProgram))")
do {
try await Task.slepp(from: .seconds(duration))
} catch {
print("Ha ocurrido un error a la hora de obtener la duracion \(error.localizedDescription)")
}
print("El programa de nombre \(name) tuvo una duracion de \(duration)")
}
let newProgram = starProgram("Games", duration: 1)
print(newProgram)