≡ Menu

Il peso di un mazzo di fogli di carta…

SwiftUI, il framework di Apple per lo sviluppo di interfacce utente, offre un modello di programmazione dichiarativo che rende semplice la creazione di interfacce utente complesse. In questo articolo, esploreremo come utilizzare SwiftUI per creare un’applicazione che calcola il peso totale di un mazzo di fogli di carta data la dimensione, la grammatura e il numero di fogli.

Questa applicazione può essere molto utile in vari contesti. Ad esempio, può essere utilizzata in un ufficio per stimare il peso di un mazzo di documenti prima di spedirli, o in una tipografia per calcolare il peso di un lotto di carta prima di stamparlo. Inoltre, può essere utilizzata in ambito educativo per insegnare concetti di matematica e fisica, come l’area, la densità e il peso.

import SwiftUI

struct ContentView: View {
    @State private var length = ""
    @State private var width = ""
    @State private var grammage = ""
    @State private var numberOfSheets = ""
    @State private var weight: String = "0"

    var body: some View {
        Form {
            Section(header: Text("Dimensioni del foglio")) {
                TextField("Lunghezza in cm", text: $length, onEditingChanged: { _ in weight = "0" })
                    .keyboardType(.decimalPad)
                TextField("Larghezza in cm", text: $width, onEditingChanged: { _ in weight = "0" })
                    .keyboardType(.decimalPad)
            }
    
            Section(header: Text("Grammatura")) {
                TextField("Grammatura in g/m^2", text: $grammage, onEditingChanged: { _ in weight = "0" })
                    .keyboardType(.decimalPad)
            }
    
            Section(header: Text("Numero di fogli")) {
                TextField("Numero di fogli", text: $numberOfSheets, onEditingChanged: { _ in weight = "0" })
                    .keyboardType(.decimalPad)
            }
    
            Section(header: Text("Peso totale dei fogli")) {
                TextField("", text: $weight)
                    .disabled(true)
            }
    
            Button(action: calculatePaperWeight) {
                Text("Calcola Peso")
            }
        }
    }
    
    func calculatePaperWeight() {
        guard let length = Double(length), let width = Double(width), let grammage = Double(grammage), let numberOfSheets = Double(numberOfSheets) else {
            weight = "0"
            return
        }
    
        // Convert cm to m
        let lengthInM = length / 100
        let widthInM = width / 100
    
        let area = lengthInM * widthInM
        let weightValue = area * grammage * numberOfSheets
    
        // Convert weight to kilograms
        let weightInKg = weightValue / 1000
    
        weight = String(format: "%.2f", weightInKg)
    }

}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

L’interfaccia utente dell’applicazione è composta da quattro sezioni per l’inserimento dei dati e un pulsante per attivare il calcolo. Le sezioni sono create utilizzando l’oggetto Section di SwiftUI, che consente di raggruppare logicamente i controlli dell’interfaccia utente. Le prime tre sezioni contengono TextField per l’inserimento della lunghezza e della larghezza del foglio di carta, la grammatura del foglio e il numero di fogli. La quarta sezione contiene un TextField disabilitato che visualizza il peso totale dei fogli di carta in chilogrammi.

Il pulsante “Calcola Peso” è creato utilizzando l’oggetto Button di SwiftUI. Quando l’utente preme questo pulsante, viene chiamata la funzione calculatePaperWeight, che calcola il peso totale dei fogli di carta.

SwiftUI utilizza un modello di gestione dello stato reattivo. In questo caso, utilizziamo la proprietà @State per creare delle variabili di stato per la lunghezza, la larghezza, la grammatura, il numero di fogli e il peso totale dei fogli. Queste variabili sono collegate ai TextField corrispondenti nell’interfaccia utente tramite il meccanismo di binding di SwiftUI, che consente di mantenere sincronizzati lo stato dell’applicazione e l’interfaccia utente.

Il peso totale dei fogli di carta viene calcolato utilizzando la formula:

Peso totale = Area * Grammatura * Numero di fogli

dove l’Area è calcolata come Lunghezza * Larghezza (in metri quadrati), la Grammatura è data in grammi per metro quadrato (g/m^2), e il Numero di fogli è il numero di fogli nel mazzo. Questo calcolo viene eseguito nella funzione calculatePaperWeight, che viene chiamata quando l’utente preme il pulsante “Calcola Peso”.

{ 0 comments… add one }

Rispondi