Compatibile con Xcode 8

La sfida del Soldato Swift parte 2. Inviami i tuoi Esercizi

Eccoci qui con la seconda Sfida del Soldato Swift.

Nella prima sfida ti ho fatto esercitare con degli esercizi classici della programmazione. Se quelli erano pensati per farti lavorare con gli strumenti di base del linguaggio, questi nuovi esercizi serviranno per testare le tue capacità di ragionamento e progettazione.

Ma veniamo subito a noi!

In questa sfida ti verrà richiesto di svolgere solamente 1 tra gli esercizi che sono qui presenti. Ovviamente, ti consiglio di farli tutti :P

Regole d’ingaggio

Questa volta è assolutamente richiesta la programmazione ad oggetti, non si scappa.

Per facilitare anche il processo di correzione degli esercizi, rispetta le seguenti linee guida:

  1. Formatta correttamente il codice. Quando invierai il codice, assicurati di aver inserito il testo all’interno del tag <> come mostrato nella prima sfida.
  2. Commenta, commenta e ancora commenta il codice. Non è solo un favore che farai a me, lo sarà soprattutto per te. I commenti ti permettono di attivare il cervello in modo da dare una spiegazione logica al codice che hai scritto. Se dal commento escono patate, vorrà dire che il codice rappresenta patate.
  3. Non inviare codice monco. Ovvero? se non dovesse funzionarti, invece di inviare il codice, scrivi pure un commento qui alla lezione. Non è un demerito non riuscire a risolvere un esercizio, anzi, spesso e volentieri si impara più da una domanda che da un intero corso.

Gli esercizi

Esercizio 0. Un Albergo ti ha richiesto la creazione un’applicazione per la gestione e prenotazione delle sue camere. L’albergo gestisce delle Stanze.

  • Ogni camera ha un numero o stringa che le identifica univocamente.
  • Esistono due tipologie di Stanza: Singola e Doppia. La prima può ospitare al massimo una persona, mentre la seconda può ospitarne due ed in più può avere la possibilità di aggiungere un terzo lettino (cosa che non può avere la stanza singola, suggerimento 1: basta un booleano -> lettino = true o false).
  • La camera può essere prenotata o meno.

Una funzione dell’Albergo permette di prenotare una camera in base alla scelta svolta dall’utente. Se l’utente passa alla funzione “Singola” o “Doppia” (suggerimento 2: utilizza un Enum), questa cerca all’interno dell’albergo una stanza che non sia occupata e la prenota.

  • Se non ci sono stanze libere, deve mandare in Output un messaggio all’utente (suggerimento 3: se vuoi fare il pro, usa la gestione degli errori).
  • Se esiste la Stanza e questa è libera, deve prenotarla e mandare un messaggio all’utente.

 

Esercizio 1. Un’azienda ti contatta per la creazione di un’applicazione per la gestione di Ricette inserite dall’utente. Quindi l’applicazione non fa altro che raccogliere le ricette, memorizzarle su un Database e fornirle agli utenti. Cioè che ti è richiesto è la creazione della struttura delle classi per la gestione ed inserimento delle Ricette.

  • Nello specifico, una Ricetta è sempre formata da:
    • Il titolo.
    • Una descrizione (cioè i passaggi per crearla).
    • Gli ingredienti della ricetta (suggerimento 1: un’array di stringhe).
    • Dei tag che servono ad indicizzare meglio le ricette (esempio: vegano, gluten free, piatto freddo).

L’applicazione ha un oggetto gestore di queste ricette che permette all’Utente di:

  • Inserire una nuova Ricetta nel Database.
  • Cercare e stampare in console tutte le ricette che hanno un determinato tag.

 

Esercizio 2. Stai realizzando un’applicazione di messaggistica tra Utenti. Un Utente è in grado di mandare un Messaggio ad un Utente della sua personale Rubrica (suggerimento 1: un array di Utenti).

  • Il messaggio viene gestito da una Chat che contiene la lista dei messaggi scambiati tra i due utenti in gioco.
  • Ogni Messaggio deve contenere:
    • Il testo del messaggio
    • Il mittente, ovvero l’Utente, del messaggio
    • Il destinatario, cioè l’Utente a cui si invia il messaggio
  • Ogni Utente è in grado di risalire alle varie Chat che ha aperto tra gli utenti (suggerimento 2: L’Utente ha un array di Chat).

L’applicazione deve essere in grado di mandare un messaggio ad un utente sfruttando sempre la stessa Chat. Cioè se l’Utente Giuseppe invia un messaggio a Luca, la prima volta creerà una Chat e successivamente i messaggi verranno aggiunti sempre a questa chat.

Considerazioni

Lo ribadisco, in questa sfida del soldato Swift parte 2, è necessario che tu metta il gioco le tue capacità di astrazione e di ragionamento.

Se qualcosa non dovesse essere chiara, o vuoi condividere con tutta la community una tua personale curiosità o dubbio, lascia pure un commento. Non preoccuparti se qualcuno dovesse “copiare” il tuo codice. Nel copiare non c’è niente di sbaglio e, cosa più importante, se qualcuno dovesse copiare senza capire ciò che sta copiando, quello a rimetterci sarà sempre lui :P

Buona programmazione!

Torna a: Corso gratuito linguaggio di programmazione Swift > Programmazione ad oggetti in Swift

Start typing and press Enter to search

La sfida del soldato swift parte 1Creare un gioco per iOS domanda e risposta in Swift