Idee progetti di programmazione

di il
13 risposte

Idee progetti di programmazione

Salve a tutti. Sono uno studente di informatica, iscritto al secondo anno. Al momento ho affrontato il linguaggio C++ in versione imperativa-procedurale, ora sto studiando la parte OOP, prevista comunque nel corso di studio. Mi piacerebbe ricevere qualche consiglio su qualche genere di applicazione da realizzare per mettere in pratica il paradigma OOP. Possibilimente non programmi del tipo rubrica, gestione di un magazzino ecc, cose già fatte e rifatte come esercizi in C(estremamente scomodo essendo di basso livello). Il problema è riuscire a trovare l'idea di di un progetto di programmazione realizzabile con conoscenze che già ho, perciò chiedo consigli a voi. Chiaramente proseguendo gli studi nella magistrale troverò cose decisamente interessanti su cui scrivere codice, ma pensando che alcuni lavorano già dopo la tiennale, non vorrei arrivare alla magistrale sapendo solo scrivere banali programmini.

13 Risposte

  • Re: Idee progetti di programmazione

    Gli spunti potrebbero essere tanti. Potresti ad esempio prendere ispirazione da un gioco dallo schema sufficientemente semplice, oppure implementare la simulazione di qualcosa, tipo un robot, o una macchina per la vendita di bibite, non so.

    In poche parole, prendi spunto da ciò che vedi nel mondo reale e che abbia caratteristiche tali da essere facilmente traducibile in codice con le conoscenze che hai.
  • Re: Idee progetti di programmazione

    Ma... potresti mettere su un architettura client server per audio conferenza e cosi aiutarmi in questo progetto se ti va.
    Sto guardando in C++ o in Java come implemetarlo ma ricevo degli errori nell'utilizzo della libreria.

    Questo errore è nel caso specifico di java
    java.lang.IllegalArgumentException: Line unsupported: interface TargetDataLine supporting format

    In pratica anche in c++ si dovrebbe creare una stanza per n utenti che mettendo muto o non muto il proprio microfono comunicano in broadcast. Ho una commessa su questo progetto nello specifico per un servizio taxi.
  • Re: Idee progetti di programmazione

    Certo sarebbe bello aiutarti, ma così su due piedi non ho idea di cosa bisgona conoscere prima di riuscire a realizzare un applicazione del genere
  • Re: Idee progetti di programmazione

    ********
  • Re: Idee progetti di programmazione

    Contatti in privato?
  • Re: Idee progetti di programmazione

    X zabnicola: in questo forum non sono ammessi annunci / posts per collaborazioni lavorative.
    Ho asteriscato l'ultimo intervento
  • Re: Idee progetti di programmazione

    OK anche qui Sorry. Lo modifico per rimediare.
  • Re: Idee progetti di programmazione

    Implementi gli algoritmi di qualunque testo di 'algoritmi e strutture dati'.
  • Re: Idee progetti di programmazione

    Innanziatutto grazie per il post migliorabile. Ti dico che in parte ho già fatto ciò che hai scritto. Al primo anno ho seguito il corso di algoritmi e strutture dati e mano a mano che le studiavo le andavo a implementare prima in versione "C", poi le ho riadattate in C++ allo schema OOP. Per esempio ho scritto una classe grafo con le sue operazioni semplici, certo da non paragonarsi minimamente a liberie tipo Boost. Poi avendo seguito anche il corso di algebra lineare ho impementato una semplice libreria per manipolare vettori e matrici. Il fine di queste esercitazione era, oltre a consolidare i concetti studiati, la scrittura di programmi in c++ (sfruttare i meccanismi sintattici particlari dei c++) e padroneggiare un pò i template. Ciò verso cui mi vorrei orientare è lo sviluppo di programmi più complessi, dove per complessità non intendo fare uso di cose avanzate e scrivere sorgenti enormi, ma intendo il mettere assieme tane cose diverse per creare qualche appplicazione utile. Questa per me ora è la vera sfida. Mi spiego meglio: scrivere una libreria per fare qualcosa significa
    1) Prendere in mano il libro da cui ho studiato i concetti da implementare
    2) Prendere un libro che tratti quela classe di algoritmi, se la cosa ha senso( ad esempio per l'algbera lineare mi sono servito di algoritmi numerici, anzichè scrivere cosice "traducendo" stupidamente ciò che facevo a mano, in codice)
    3) Scrivere il codice in maniera estremamente intelligente, cercando di sfrutare i meccanismi specifici del linguaggio che sto usando, pensati per ottenere un codice "moderno".

    Come vedi, sapendo qul'è la roadmap, l'impresa non è difficile. Difficile è ciò di cui non si sa da dove cominciare. Quello che hai scritto è un ottimo esercizio ma, come ho già scritto, in parte ho già svolto. Certamente è interessante creare un garbage collector, ma mi affidero ad un libro per capire prima come funziona e in seguito implementarlo.
    Colgo la tua idea di realizzare un allocatore di memoria personalizzato, pensi che possa capire come realizarlo già da ora, o mi servono conoscenze più avanzate?
  • Re: Idee progetti di programmazione

    Riprendo la discussione aggiorando le notizie. Ho discusso di come avrei dovuto applicare le mie conoscenze teoriche riguardo la programmazione oop. Ciò che ho detto che mi è risultato facile da fare per esercio è una libreria, questo perchè avevo delle conoscenze teroiche da trasformare in algoritmi(cosa abbastanza semplice), solo che anzichè pensare il tutto in chiave imperativa-procedurale, andave incapsulata in oggetti su cui andavano definite properità ed operazioni. Allora, chiesi aiuto a voi su che cosa fare per alzare il livello di difficoltà e ho deciso di seguire l'idea di Alka, cioè realizzare un semplice gioco. Ho optato per snake. Beh devo dire che per quanto sia semplice concettualmente il gioco, non è affatto semplice da realizzare. Ho scelto per lo scopo una libreria grafica molto semplice (dato che al momento non voglio entrare in dettaglio nel mondo della grafica computerizzata) SFML.
    La difficoltà in primo luogo è stata quella di pensare al codice in funzione delle funzionalità fornite dalla libreria esterna, a differenza di quanto facevo prima, ovvero usare i costrutti sintattici del linguaggio per realizzare la logica del programma. In secondo luogo mi sono sorti tantissimi dubbi sul come fare certe cose. Vi faccio un esempio: ho una classe per lo snake che contiene tuttel le informazioni sullo snake e una classe gioco che contine tutti gli elementi del gioco: snake, "muri", mele. Ho bisogno di un metodo che disegna le mele e uno che disegna lo snake. Il dubbio viene su questo: tale metodo, deve far parte della classe snake o della classe gioco? E' responbilità del gioco sapere come disegnare lo snake, o è responsabilità dello snake sapere come disegnarsi? Io ho scelto la prima, ditemi voi qual'è la scleta giusta e soprattutto in base a cosa fare tale scelta, escludendo il mio criterio: buon senso.
    Altro dubbio: lo snake mangia le mele. E' giusto che lo snake nella sua classe abbia un puntatore all'oggetto mela in modo da sapere sempre la sua posizione, oppure deve essere il gioco a contollare se il punto in cui si trova snake coincide col punto in cui si trova la mela? In questo caso ho scelto la prima, ma m sembra essere una cattiva sceltain quanto sto "legando" due oggetti che dovrebbero rimanere separati. Anche qui aspetto un vostro consiglio. Vorrei inltre cheidervi qualche consiglio su libri che trattino di design delle classi per quanto riguarda questi aspetti.
  • Re: Idee progetti di programmazione

    L'OOP è comoda quando devi svincolare la parte grafica dalla parte algoritmica del progetto. Quando, però, ti fa perdere tempo su dove piazzare un metodo, mentre hai ancora il cuore del problema da risolvere, allora l'OOP inizia ad essere un problema. Fai il programma come ti viene più comodo secondo il tuo modo di ragionare. Quando le cose iniziano a funzionare, puoi passare al "refactoring"
  • Re: Idee progetti di programmazione

    Hai posto un'ottima questione ma è anche la più difficile: quali sono gli oggetti chiamati in causa?

    Non solo: come si relazionano?

    Per prendere il tuo esempio di Snake:
    - chi disegna la mela? La mela, il gioco o un'ulteriore classe disegnatore?
    - Chi gestisce il mangia? Snake, la mela (mangiata da), il gioco o un manager delle collisioni? ES: snake si scontra con mela: Snake mangia! Se però Snake si scontra con Snake, allora muore

    Ovviamente qui si può andare avanti all'infinito, perchè anche in un gioco semplice si possono avere molte decine di classi... che di suo ci può stare, ma gestite le relazioni è poi complesso/articolato.

    Parti prima mettendo tutto su carta (si, vecchia carta). Poi magari raggruppa un pò per caratteristiche simili e metti assieme.

    Quando trovi il giusto mix di classi/comodità, allora inizia a sviluppare secondo quelle logiche.

    Se hai organizzato bene, lo studio è giusto.
    Se ti trovi troppe volte a non sapere dove mettere una cosa o diventa troppo oneroso far comunicare due classi, riparti dallo studio su carta perchè qualcosa non ha funzionato

    Per fare esperienza secondo me è il modo più veloce per imparare
  • Re: Idee progetti di programmazione

    Grazie mille Pigi, seguirò il tuo consiglio!
Devi accedere o registrarti per scrivere nel forum
13 risposte