Alexv ha scritto:
Poi due corsi di C senza vedere bene i puntatori...
Si, tanto vale studiare il basic.
Comunque, non mi esprimo sulla didattica. Il nostro amico ha ricevuto un compito e quel che è stato è stato. Più che altro io gli chiederei: quanto tempo hai a disposizione?
Questa mi sembra una questione importante perché un progetto di questo tipo in C non può richiedere meno di un certo tempo, soprattutto se chi lo scrive non ha esperienza e non possiede parti di codice già scritte in precedenza da poter riadattare al caso specifico.
Per l'organizzazione del programma hai già ricevuto consigli molto utili. Il consiglio che ti do anche io è quello di dividere il progetto in moduli, che sono costituiti da un file di implementazione "nome.c" e un file di interfaccia "nome.h" attraverso il quale il modulo può comunicare con gli altri e/o con l'entry point. Una unità di traduzione diventa modulo quando il suo funzionamento è indipendente dal resto del codice, un accorgimento che ti è già stato consigliato. Questo ti consente non solo di prendere un modulo e adattarlo ad un altro progetto, ma quando è scritto bene e funziona, non ti devi più preoccupare di esso quando fai pasticci in altre parti del codice. In questo modo ti metti al riparo da certe grane e intanto ti abitui anche ad organizzare il codice con una struttura modulare. Ad esempio ti servirà un modulo basedati (BaseDati.c + BaseDati.h) per gestire i dati e la loro memoria, un modulo parser (Parser.c + Parser.h) per gestire il file in lettura e scrittura. Puoi anche suddividere ulteriormente e dedicare un parser per la lettura e un writer per la scrittura. Ti servirà un core, o model (chiamalo come vuoi) capace di implementare le funzionalità centrali e specifiche del tuo progetto. Il tuo core o model sarà il nocciolo centrale del progetto e dunque il tuo Model.c dovrà includere le interfacce degli altri moduli (BaseDati.h, Parser.h, UsuerInteraction.h ...ecc.). Fatti uno schema di progetto.
Un ulteriore consiglio: ti capiterà, strada facendo di capire che alcuni codici possono essere scritti meglio e organizzati meglio. Dovrai scendere a compromessi e prediligere l'aspetto pratico a quello estetico, perché altrimenti il tuo progetto lo finirai per la tesi di laurea.