premetto che ho già dato un'occhiata alle *pillole* stickate qui in alto sulla programmazione modulare, nonostante ciò non riesco a venire a capo del mio problema.
Vorrei capire come rendere il mio programma "modularizzato" al punto giusto... non sono molto pratico in materia visto che è la prima volta che mi si presenta questa esigenza, quindi siate comprensivi con me
parto dandovi qualche informazione utile riguardo al programma.
ho praticamente finito di scrivere il codice e vorrei capire come utilizzare il file header.h da me creato contenente i prototipi di funzione, la definizione di varie strutture a alcune direttive del preprocessore.
Ho suddiviso il programma in quattro file + un header file, ma non so se è la maniera giusta di procedere.
senza dilungarmi troppo su quello che fa il mio pragramma, vi basta sapere che il main chiama essenzialmente due funzioni dal nome: firstPass e secondPass.
All'interno del main ho inserito tutte le funzioni che hanno il compito di aprire file (uno in scrittura e uno in lettura) digitati da linea di comando dall'utente. Inoltre nel main è contenuta pure la funzione secondPass(in totale, il main è composto da circa 300 righe di codice).
una volta aperto il file in lettura viene chiamata la funzione firstPass.
Tale funzione è quella che fa praticamente tutto. è una funzione molto lunga e articolata, tanto che ho pensato di riservargli un file a parte. Per ora è composta da circa 800 righe, ma se aggiungo (come farò) nuove funzionalità le righe aumenteranno...
il compito della funzione firstPass è essenzialmente quello di analizzare le singole parole che compongo il file aperto in lettura e, dopo le opportune verifiche di validità della stringa, verranno chiamate da firstPass una serie di altre funzioni (tramite uno switch), in base al contenuto della stringa. le funzioni che possono essere chiamate sono sette.
accade però che due di queste funzioni ne chiamano altre che servono a completare il compito svolto dalla funzione in questione.
per esempio, una delle funzioni contenute in firstPass è quella per il calcolo di espressioni. Essa quindi si avvale di una serie di altre funzioni che implementano l'algoritmo per il calcolo in notazione polacca inversa. Ho pensato dunque di sistemare queste funzioni in un file a parte che ho chiamato polishcalc.c
stesso discorso vale per un'altra funzione in firstPass (con conseguente creazione di un altro file.c per contenere tutte le funzioni correlate.
ricapitolando... l'algoritmo del mio programma è (molto sinteticamente) il seguente:
codice:
apro il file di testo
finchè non raggiungo la fine del file
passo una riga del file alla funzione firstPass
scorro le parole contenute nella riga
in base al tipo di parola eseguo una delle seguenti funzioni
func1
func2 //questa è la mia funzione polishcalc
che accede ad un file
contenente le funzioni di cui ha bisogno
func3 //questa è un'altra
funzione che accede ad un file
appositamente creato per lei
func4
...ecc
verifico che il file sia stato totalmente letto
chiudo il file
apro un nuovo file in scrittura
eseguo la funzione secondPass
scrivo i risultati sul file aperto in scrittura
chiudo il file
fine del main
per la funzione func2 quindi ho creato un nuovo file contenente tutte le funzioni necessarie per il calcolo in notazione polacca.
il mio problema è come gestire tutti questi file seguendo delle corrette regole di visibilità.
per ora mi sono limitato ad inserire TUTTI i prototipi di funzione in un unico file header.h e ho incluso in ogni file del programma l'header.h. Ma se io volessi che le funzioni contenute nel file polishcalc fossero visibili solamente al file firstPass (visto che chi ne usufruisce è solamente lui) come dovrei procedere?
mi scuso in anticipo per questa lungaggine, e non vogliatemene se ho detto un sacco di cavolate o se non sono riuscito a spiegarmi... io cel'ho messa tutta
se avete anche qualche link di riferimento (io ho trovato ben poco) ve ne sarei grato