Si parte dalla acquisizione (o creazione) di una struttura tabellare in Excel: i dati saranno una quarantina di righe, ma il programma deve essere eseguito come se ce ne fossero un migliaio. Quindi "nessun conto a mano" "nessuna formula particolare"
Mediante successive trasformazioni i dati contenuti in tabella vengono usati per eseguire una inizializzazione delle strutture dati definite nel programma C.
La lista degli elementi di arredo che si deve costruire è una struttura che riporta le seguenti informazioni (nell'esempio N è stato arbitrariamente messo a 10):
Il main program è essenzialmente composto da una serie di printf che disegnano la schermata in modo ordinato.
Vengono assegnati dei valori ad ogni scelta (1,2,3,4,...)
Si chiede all'operatore di operare la scelta mediante un input di uno dei valori che, se riconosciuti, lanciano una funzione corrispondente alla funzionalità richiesta.
La parte esecutiva è composta da una serie di funzioni (es. creazione() ) che costituisce il vero e proprio applicativo.
Ogni funzione deve procurarsi i dati necessari e deve eseguire le operazioni connesse. Esempio la creazione di una lista di arredamento implicherà la richiesta del nome della lista, e successivamente l'input dei codici e delle quantità degli elementi dell'arredamento del locale.
L'input degli elementi deve essere eseguito più volte sino a che l'utente inserisce per esempio il codice 0.
Una funzione utile è quella di "stampa_intestazione" che è la semplice stampa di tutto il magazzino con tutti i campi.
Quando viene acquisito il codice di un elemento, si deve cercare nella tabella magazzino per vedere se il codice c'è (casomai si stampa errore) e si acquisisce il numero della riga dove ci sono i dati di quel singolo elemento di arredamento (inclusa la quantità esistente... che deve essere verificata a fronte di quella necessaria (casomai si stampa errore)).
Nella lista viene quindi scritto il codice e la quantità ... ricordandosi inoltre di diminuire la quantità esistente a magazzino di un numero di pezzi equivalenti)
Nell'esempio ho trovato utile mettere due funzioni in modo da frantumare il programma in tanti pezzi più semplici.
Esempio la funzione "cercascelta(int)" viene chiamata comunicando il codice che deve essere cercato, la funzione esegue la ricerca e comunica come risultato la posizione (comunica -1 se il codice non c'è)
Invece la funzione "processa_articolo" esegue la vera e propria elaborazione (assegna codice e quantità alla lista, aggiorna il magazzino .. ecc)
Una nota operativa: nei pezzi di codice che inserisco qui e là si nota una serie di frasi "//printf("\n\n---- %d ...." che sono in verde poichè sono dei commenti. E' estremamente utile mettere frasi simili nei punti del programma dove è importante verificare cosa succede (al di là delle intenzioni del programmatore, gli errori sono inevitabili e spesso si deve controllare cosa succede davvero).
Basta mettere e togliere le doppie barre // dalle frasi per ottenere la stampa di valori caratteristici in modo da poter controllare se le operazioni vengono fatte o meno. Io ho lasciato questa frasi nel testo (che vengono poi di solito cancellate) per mostrare un modo pratico di procedere-
Le funzioni in cui è scomposto il progetto sono tutte molto elementari e si possono trovare nel materiale del corso (con le evidenti variazioni). Per esempio la cercascelta è composta da 3 righe di codice.
La scomposizione serve a dominare la complessità del programma.
altro esempio l'aggiornamento del magazzino:
Si consiglia di procedere eseguendo per parti il progetto facendo in modo che ogni parte sia completa e funzionante. E' meglio avere meno funzionalità funzionanti che avere un progetto completo che non funziona.